package com.demo.java.OD551_600.OD575;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【反转每对括号间的子串(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146563554
 */
public class OdMain {
    public static void main(String[] args) {
        // 输入
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();

        System.out.println(reverseParentheses(input_str));  // 输出结果
    }

    // 反转括号中的内容
    public static String reverseParentheses(String s) {
        Deque<String> stack = new LinkedList<String>();  // 用栈来保存字符序列
        StringBuffer sb = new StringBuffer();  // 存储当前字符序列
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch == '(') {
                stack.push(sb.toString());  // 遇到左括号时，将当前内容入栈
                sb.setLength(0);  // 清空当前字符序列，开始新的序列
            } else if (ch == ')') {
                sb.reverse();  // 遇到右括号时，反转当前字符序列
                sb.insert(0, stack.pop());  // 弹出栈顶内容并拼接到当前字符序列前面
            } else {
                sb.append(ch);  // 遇到普通字符时，直接加入当前字符序列
            }
        }
        return sb.toString();  // 返回最终的字符串
    }
}